Ăksikasjalik juhend CSS @scroll-timeline'i kohta, mis hĂ”lmab selle sĂŒntaksit, omadusi, kasutamist ja tĂ€iustatud animatsioonitehnikaid. Ăppige, kuidas luua kaasahaaravaid kerimisega juhitavaid animatsioone kaasaegsete veebikogemuste jaoks.
CSS @scroll-timeline'i valdamine: animatsiooni juhtimine kerimise edenemise kaudu
Veebiarenduse pidevalt arenevas maastikus on kaasahaaravate ja interaktiivsete kasutajakogemuste loomine ĂŒlimalt tĂ€htis. CSS pakub selle saavutamiseks erinevaid tööriistu ja ĂŒks vĂ”imsamaid, kuid sageli tĂ€helepanuta jĂ€etud, on reegel @scroll-timeline. See funktsioon vĂ”imaldab arendajatel siduda animatsioonid otse elemendi kerimise edenemisega, luues kĂŒtkestavaid kerimisega juhitavaid animatsioone. See artikkel pakub pĂ”hjalikku uurimist @scroll-timeline, hĂ”lmates selle sĂŒntaksit, omadusi, praktilist kasutamist ja tĂ€iustatud animatsioonitehnikaid, et tĂ”sta teie veebidisaini.
Mis on CSS @scroll-timeline?
@scroll-timeline on CSS-i reegel, mis mÀÀratleb kerimisajajoone, mis on sisuliselt olekute jada, mis vastavad mÀÀratud elemendi kerimispositsioonile. Selle asemel, et tugineda traditsioonilistele ajapÔhistele animatsioonidele, seob @scroll-timeline animatsiooni edenemise kasutaja kerimistegevusega. See toob kaasa loomulikuma ja reageerivama animatsiooni, kuna animatsiooni kiirust kontrollib otse kasutaja kerimiskÀitumine.
See avab pÔnevad vÔimalused:
- Visuaalne jutustamine: NÀidake sisu jÀrk-jÀrgult, kui kasutaja kerib.
- Interaktiivne andmete visualiseerimine: Animeerige diagramme ja graafikuid, kui kasutaja andmeid uurib.
- Parallaksi efektid: Looge sĂŒgavust ja mÔÔdet, animeerides erinevaid elemente erineva kiirusega, mis pĂ”hineb kerimise positsioonil.
- Edenemise indikaatorid: Esitage visuaalselt kasutaja edenemist pikas dokumendis.
SĂŒntaks ja omadused
Reegli @scroll-timeline pĂ”hisĂŒntaks on jĂ€rgmine:
@scroll-timeline timeline-name {
source: auto | <element-selector>;
orientation: auto | block | inline;
scroll-offsets: <scroll-offset>[ , <scroll-offset> ]*;
}
LĂ€hme iga omaduse juurde:
timeline-name
See on teie kerimisajajoone ainulaadne identifikaator. Te kasutate seda nime ajajoonele animatsiooni rakendamisel.
NĂ€ide:
@scroll-timeline my-scroll-timeline {
/* ... */
}
source
See omadus mÀÀrab elemendi, mille kerimispositsioon juhib animatsiooni. Sellel vÔib olla kaks vÀÀrtust:
auto: Brauser mÀÀrab automaatselt kerimiselemendi. See on sageli dokumendi vaateaken (brauseri aken).<element-selector>: CSS-i selektor, mis identifitseerib konkreetse elemendi, mida kasutada kerimisallikana. See vÔimaldab teil suunata konkreetseid konteinereid vÔi jaotisi oma lehel.
NĂ€ide (vaateakna kasutamine allikana):
@scroll-timeline my-scroll-timeline {
source: auto; /* Kasutab vaateakent */
/* ... */
}
NĂ€ide (konkreetse elemendi kasutamine allikana):
@scroll-timeline my-scroll-timeline {
source: #scrollable-container; /* Kasutab elementi ID-ga "scrollable-container" */
/* ... */
}
orientation
See omadus mÀÀrab kerimissuuna, mida ajajoone jaoks kasutada. See mÀÀrab, kas animatsiooni juhitakse vertikaalse vÔi horisontaalse kerimisega. Sellel vÔib olla kolm vÀÀrtust:
auto: Brauser mÀÀrab automaatselt kerimissuuna, mis pĂ”hineb allikaelemendi domineerival kerimissuunal.block: Kasutab ploki (vertikaalne enamikus kirjutamisreĆŸiimides) kerimissuunda.inline: Kasutab reasisest (horisontaalne enamikus kirjutamisreĆŸiimides) kerimissuunda.
NĂ€ide (vertikaalse kerimise kasutamine):
@scroll-timeline my-scroll-timeline {
source: auto;
orientation: block; /* Vertikaalne kerimine */
/* ... */
}
NĂ€ide (horisontaalse kerimise kasutamine):
@scroll-timeline my-scroll-timeline {
source: #horizontal-scroll-container;
orientation: inline; /* Horisontaalne kerimine */
/* ... */
}
scroll-offsets
See omadus mÀÀrab kerimispositsioonid, mis vastavad animatsiooni konkreetsetele punktidele. See on valikuline omadus ja kui seda ei tĂ€psustata, esitatakse animatsioon keritava ala algusest lĂ”puni. Kasutamisel saate mÀÀratleda ĂŒhe vĂ”i mitu kerimisnihet, millest igaĂŒks mÀÀrab kerimispositsiooni ja vastava punkti animatsiooni edenemises.
SĂŒntaks <scroll-offset> on:
<scroll-offset> = <length-percentage> [ at <length-percentage> ]
Kus:
- Esimene
<length-percentage>tÀhistab kerimispositsiooni keritavas alas. - Valikuline
at <length-percentage>tĂ€histab vastavat animatsiooni edenemist (0% kuni 100%). Kui see on vĂ€lja jĂ€etud, jaotatakse animatsiooni edenemine ĂŒhtlaselt mÀÀratletud kerimisnihete vahel.
NĂ€ited:
/* Kerimispositsioon 200px vastab animatsiooni edenemisele 0% */
scroll-offsets: 200px at 0%;
/* Kerimispositsioon 50% keritavast alast vastab animatsiooni edenemisele 50% */
scroll-offsets: 50% at 50%;
/* Mitu nihet: */
scroll-offsets: 0px at 0%, 500px at 50%, 1000px at 100%;
/* Ilma mĂ€rksĂ”nata "at" - ĂŒhtlaselt jaotatud animatsiooni edenemine: */
scroll-offsets: 0px, 500px, 1000px; /* SamavÀÀrne 0px at 0%, 500px at 50%, 1000px at 100% */
Olulised kaalutlused scroll-offsets kohta:
- Kui tÀpsustate
scroll-offsets, veenduge, et need kataksid keritava ala vahemiku, et vÀltida ootamatut animatsioonikÀitumist. - Animatsiooni edenemine on mÀÀratletud kerimisnihete vahel.
- Kui te ei tÀpsusta
scroll-offsets, jaotatakse animatsiooni edenemine ĂŒhtlaselt kogu keritavale alale.
Kerimisajajoone rakendamine animatsioonile
Kui olete oma kerimisajajoone mÀÀratlenud, peate seda rakendama CSS-i animatsioonile, kasutades omadust animation-timeline.
SĂŒntaks on lihtne:
animation-timeline: timeline-name; /* Kasutage nime, mille mÀÀratlesite @scroll-timeline'is */
Samuti peate mÀÀratlema standardse CSS-animatsiooni, kasutades @keyframes. Animatsioon mÀÀratleb muutused CSS-i omadustes, mis ilmnevad kasutaja kerimisel. Lisaks soovite veenduda, et CSS-i omadus `animation-range` on seatud. See mÀÀratleb kerimisajajoone vahemiku, mis aktiveerib animatsiooni.
Siin on tÀielik nÀide:
/* MÀÀrake kerimisajajoon */
@scroll-timeline my-scroll-timeline {
source: auto;
orientation: block;
}
/* MÀÀrake animatsioon */
@keyframes fade-in {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
/* Rakendage animatsioon ja kerimisajajoon elemendile */
.animated-element {
animation: fade-in 1s forwards;
animation-timeline: my-scroll-timeline;
animation-range: entry 25% cover 75%; /* entry ja cover on mÀrksÔna vÀÀrtused algus- ja lÔppvahemiku jaoks */
}
Selles nÀites:
- On mÀÀratletud
@scroll-timelinenimegamy-scroll-timeline, kasutades vaateakent allikana ja vertikaalset kerimist orientatsioonina. @keyframesnimegafade-inmÀÀratleb lihtsa sissehÀÀlestuse ja ĂŒleslibistamise animatsiooni.- Klassil
.animated-elementon rakendatudfade-inanimatsioon, kuid selle asemel, et see kĂ€ivituks taimeri jĂ€rgi, juhib sedamy-scroll-timeline. - Animatsiooniulatus mÀÀratleb, et animatsioon peaks algama siis, kui elemendi ĂŒlemine serv siseneb vaateakna alumisse 25% ja lĂ”ppema siis, kui see jĂ€tab ĂŒlemise 25%.
Praktilised nÀited ja kasutusjuhud
Uurime mÔningaid praktilisi nÀiteid selle kohta, kuidas saate kasutada @scroll-timeline, et luua kaasahaaravaid veebikogemusi.
1. Sisu jÀrkjÀrguline avalikustamine
See on levinud kasutusjuht, kus te nÀitate sisu, kui kasutaja kerib lehte alla. Kujutage ette pikavormilist artiklit, mille osad hÀÀlestuvad sisse, kui need vaatevÀlja ilmuvad.
HTML:
<section class="content-section">
<h2>1. osa</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>
</section>
<section class="content-section">
<h2>2. osa</h2>
<p>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua...</p>
</section>
CSS:
@scroll-timeline reveal-timeline {
source: auto;
orientation: block;
}
@keyframes reveal {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.content-section {
animation: reveal 1s forwards;
animation-timeline: reveal-timeline;
animation-range: entry 25% cover 75%;
}
Selles nĂ€ites hÀÀlestub iga .content-section sisse, kui see vaatevĂ€lja kerib. `animation-range` tagab, et animatsioon algab siis, kui sektsiooni ĂŒlemine serv siseneb vaateakna alumisse 25% ja lĂ”peb siis, kui sektsioon jĂ€tab ĂŒlemise 25%.
2. Parallaksi efektid
Parallaksi efektid loovad sĂŒgavustunde, liigutades taustaelemente erineva kiirusega kui esiplaanil olevad elemendid. @scroll-timeline muudab parallaks-kerimise hĂ”lpsaks rakendamiseks.
HTML:
<div class="parallax-container">
<div class="background-element"></div>
<div class="foreground-element">
<h2>Parallaksi sektsioon</h2>
<p>MÔni sisu siin...</p>
</div>
</div>
CSS:
.parallax-container {
position: relative;
height: 500px; /* Reguleerige vastavalt vajadusele */
overflow: hidden;
}
.background-element {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('background.jpg'); /* Asendage oma pildiga */
background-size: cover;
transform: translateZ(-1px) scale(2); /* Loob parallaksi efekti */
transform-origin: top;
pointer-events: none; /* VÔimaldab klÔpsamist esiplaanil olevatel elementidel */
animation: parallax-bg 1s linear forwards;
animation-timeline: parallax-timeline;
animation-range: 0vh 100vh;
}
.foreground-element {
position: relative;
z-index: 1;
padding: 50px;
background-color: rgba(255, 255, 255, 0.8);
}
@scroll-timeline parallax-timeline {
source: auto;
orientation: block;
}
@keyframes parallax-bg {
0% { transform: translateZ(-1px) scale(2) translateY(0px); }
100% { transform: translateZ(-1px) scale(2) translateY(-50vh); }
}
Selles nÀites on .background-element paigutatud .foreground-element taha ja skaleeritud, kasutades transform. SeejÀrel rakendatakse animatsiooni `parallax-bg`, mille tulemusena liigub taust esiplaanist aeglasemalt, kui kasutaja kerib, luues parallaksi efekti. `animation-range` tagab, et animatsioon jookseb kogu vaateakna ulatuses (0vh kuni 100vh).
3. Edenemisriba animeerimine
Saate kasutada @scroll-timeline, et luua edenemisriba, mis esitab visuaalselt kasutaja kerimis edenemist dokumendis.
HTML:
<div class="progress-bar-container">
<div class="progress-bar"></div>
</div>
<div class="content">
<!-- Teie sisu siin -->
</div>
CSS:
.progress-bar-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 5px;
background-color: #eee;
z-index: 1000;
}
.progress-bar {
height: 100%;
width: 0%;
background-color: #007bff;
animation: progress-bar-fill 1s linear forwards;
animation-timeline: document-scroll-timeline;
}
@scroll-timeline document-scroll-timeline {
source: auto;
orientation: block;
}
@keyframes progress-bar-fill {
0% {
width: 0%;
}
100% {
width: 100%;
}
}
Selles nÀites animeeritakse .progress-bar laius 0%-st 100%-ni, kui kasutaja dokumendis kerib. @scroll-timeline on nimetatud `document-scroll-timeline`, mis teeb selgeks, mida see esindab.
TĂ€iustatud tehnikad
Kui olete pÔhitÔdedega kursis, saate uurida mÔningaid tÀiustatud tehnikaid, et luua veelgi keerukamaid kerimisega juhitavaid animatsioone.
1. scroll-offsets'i kasutamine tÀpseks juhtimiseks
Omadus scroll-offsets vÔimaldab teil kaardistada konkreetseid kerimispositsioone konkreetsetele animatsiooni edenemise vÀÀrtustele. See on kasulik, kui soovite kÀivitada teatud animatsiooniseisundid kerimise tÀpsetes punktides.
@scroll-timeline custom-timeline {
source: #scrollable-container;
orientation: block;
scroll-offsets: 100px at 0%, 500px at 50%, 1000px at 100%;
}
@keyframes custom-animation {
0% {
transform: translateX(-100px);
opacity: 0;
}
50% {
transform: translateX(0);
opacity: 1;
}
100% {
transform: translateX(100px);
opacity: 0;
}
}
.animated-element {
animation: custom-animation 1s forwards;
animation-timeline: custom-timeline;
}
Selles nÀites animatsioon:
- Algab aadressil
translateX(-100px)jaopacity: 0, kui kerimispositsioon on 100px. - Saavutab vÀÀrtuse
translateX(0)jaopacity: 1, kui kerimispositsioon on 500px. - LÔpeb vÀÀrtusega
translateX(100px)jaopacity: 0, kui kerimispositsioon on 1000px.
2. Koostöö JavaScriptiga
Kuigi @scroll-timeline pakub vÔimsat animatsiooni juhtimist CSS-i kaudu, saate seda kombineerida JavaScriptiga, et saada veelgi suuremat paindlikkust. NÀiteks vÔite kasutada JavaScripti, et:
- Arvutada ja vĂ€rskendada dĂŒnaamiliselt
scroll-offsets, mis pÔhinevad vaateakna suurusel vÔi sisumuutustel. - KÀivitada tÀiendavaid JavaScriptil pÔhinevaid efekte vÔi interaktsioone, mis pÔhinevad kerimise edenemisel.
- Rakendada varulahendusi brauserite jaoks, mis ei toeta tÀielikult
@scroll-timeline.
Siin on pÔhiline nÀide kerimise edenemise lugemisest ja CSS-i muutuja vÀrskendamisest:
const scrollableElement = document.getElementById('scrollable-container');
const animatedElement = document.querySelector('.animated-element');
scrollableElement.addEventListener('scroll', () => {
const scrollPosition = scrollableElement.scrollTop;
const maxScroll = scrollableElement.scrollHeight - scrollableElement.clientHeight;
const scrollPercentage = (scrollPosition / maxScroll) * 100;
animatedElement.style.setProperty('--scroll-progress', scrollPercentage + '%');
});
SeejÀrel saate seda CSS-i muutujat oma animatsioonis kasutada:
@keyframes custom-animation {
0% {
transform: translateX(calc(var(--scroll-progress) * -1px));
}
100% {
transform: translateX(calc(var(--scroll-progress) * 1px));
}
}
.animated-element {
--scroll-progress: 0%; /* AlgvÀÀrtus */
animation: custom-animation 1s linear forwards;
animation-timeline: scroll-driven-timeline;
}
3. Erinevate pÔhimÔtete kasutamine
Kuigi animation-timing-function ei ole otseselt kohaldatav kerimisajajoonele endale (kuna ajajoont juhib kerimise edenemine, mitte aeg), saate siiski kasutada @keyframes'i sees pĂ”himĂ”tteid, et kontrollida animatsiooni kiirust ja rĂŒtmi erinevatel etappidel. Katsetage erinevate pĂ”himĂ”tetega, nagu ease-in, ease-out, ease-in-out vĂ”i isegi kohandatud kuupmeetri Bezieri kĂ”verad, et saavutada soovitud efekt.
Brauseri ĂŒhilduvus ja tagavara
2023. aasta lĂ”pu seisuga on @scroll-timeline-il suhteliselt hea brauseri tugi kaasaegsetes brauserites, nagu Chrome, Edge, Firefox ja Safari. Siiski on oluline kontrollida praegust ĂŒhilduvuse olekut veebisaitidel nagu Can I use... enne selle tootmises rakendamist.
Brauserite jaoks, mis ei toeta @scroll-timeline, saate pakkuda tagavara, kasutades traditsioonilisi JavaScriptil pĂ”hinevaid kerimissĂŒndmuste kuulajaid ja animatsiooniteeke, nagu GSAP (GreenSock Animation Platform) vĂ”i Anime.js. Samuti saate kasutada CSS-i funktsioonipĂ€ringuid (@supports), et tinglikult rakendada kas @scroll-timeline-pĂ”hiseid animatsioone vĂ”i JavaScriptil pĂ”hinevaid tagavarasid.
@supports (animation-timeline: scroll()) {
/* Rakendage @scroll-timeline-pÔhised animatsioonid */
.animated-element {
animation: fade-in 1s forwards;
animation-timeline: my-scroll-timeline;
}
} @else {
/* Rakendage JavaScriptil pÔhinev tagavara */
.animated-element {
/* Peida algselt */
opacity: 0;
}
/* (JavaScripti kood kerimise tuvastamiseks ja lÀbipaistvuse rakendamiseks) */
}
LigipÀÀsetavuse kaalutlused
Kui kasutate @scroll-timeline vÔi mÔnda animatsioonitehnikat, on oluline arvestada ligipÀÀsetavusega. Veenduge, et teie animatsioonid ei pÔhjusta:
- Krampe: VÀltige vilkumist vÔi kiiresti muutuvaid animatsioone.
- HÀirivust: Pakkuge viis, kuidas kasutajad saavad animatsioone peatada vÔi keelata, eriti kui need on pikad vÔi hÀirivad.
- Kognitiivne ĂŒlekoormus: Kasutage animatsioone sÀÀstlikult ja veenduge, et need teenivad selget eesmĂ€rki, mitte ei ole puhtalt dekoratiivsed.
- Liikumishaigust: Olge teadlik parallaksi efektidest, kuna need vÔivad mÔnedel kasutajatel vallandada liikumishaiguse.
Kaaluge alternatiivsete vÔimaluste pakkumist animatsioonide kaudu esitatud teabele juurdepÀÀsuks, nÀiteks staatilise sisu vÔi kirjeldava teksti. Kasutage ARIA atribuute semantilise tÀhenduse ja konteksti pakkumiseks abistavatele tehnoloogiatele.
Parimad tavad
Siin on mÔned parimad tavad, mida @scroll-timeline-iga töötamisel meeles pidada:
- Kasutage kirjeldavaid ajajoonenimesid: Valige ajajoonenimed, mis nÀitavad selgelt nende eesmÀrki (nt
parallax-background-timeline,reveal-section-timeline). - Hoidke animatsioonid jÔudlusega: Optimeerige oma animatsioone, et vÀltida jÔudlusprobleeme. Kasutage riistvaraliselt kiirendatud CSS-i atribuute, nagu
transformjaopacity, kui see on vÔimalik. - Testige pÔhjalikult: Testige oma animatsioone erinevatel seadmetel ja brauseritel, et tagada nende ootuspÀrane toimimine ja et need ei pÔhjustaks ligipÀÀsetavuse ega jÔudluse probleeme.
- Alustage lihtsast: Alustage lihtsate animatsioonidega ja lisage jÀrk-jÀrgult keerukust, kui saate kogemusi.
- MÔelge kasutajakogemusele: Veenduge, et teie animatsioonid parandavad kasutajakogemust, mitte ei kahjusta seda. VÀltige liiga keerukaid vÔi hÀirivaid animatsioone.
- Kasutage CSS-i omadust `animation-range`: Veenduge, et animatsioonid kÀivituksid ainult siis, kui element on vaatevÀljas, et tagada sujuv ja prognoositav kogemus.
KokkuvÔte
@scroll-timeline on vĂ”imas CSS-i funktsioon, mis vĂ”imaldab arendajatel luua kaasahaaravaid ja interaktiivseid kerimisega juhitavaid animatsioone. Sidudes animatsioonid kasutaja kerimiskĂ€itumisega, saate luua loomulikumaid ja reageerivamaid veebikogemusi. MĂ”istes selle sĂŒntaksit, omadusi ja tĂ€iustatud tehnikaid, saate kasutada @scroll-timeline oma veebidisaini tĂ”stmiseks ja kĂŒtkestavate kasutajate teekondade loomiseks. Pidage meeles, et @scroll-timeline rakendamisel tuleb arvestada brauseri ĂŒhilduvuse, ligipÀÀsetavuse ja jĂ”udlusega ning seada alati esikohale kasutajakogemus.